#!/bin/bash
###
# @Author: Logan.Li
# @Gitee: https://gitee.com/attacker
# @email: admin@attacker.club
# @Date: 2025-03-14 09:30:30
# @LastEditTime: 2025-03-14 09:30:35
# @Description: 阿里云监控系统卸载脚本
###

# 获取脚本所在目录
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
cd "$SCRIPT_DIR"

# 颜色定义
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m'

# 打印带颜色的信息
print_info() {
    echo -e "${GREEN}[信息] $1${NC}"
}

print_warn() {
    echo -e "${YELLOW}[警告] $1${NC}"
}

print_error() {
    echo -e "${RED}[错误] $1${NC}"
}

# 确认卸载
confirm_uninstall() {
    print_warn "此操作将完全删除阿里云监控系统，包括："
    echo "1. 删除所有监控脚本和配置文件"
    echo "2. 删除定时任务"
    echo "3. 删除日志文件"
    echo "4. 删除Python虚拟环境"
    echo ""
    
    read -p "确定要继续卸载吗？(y/n) " -n 1 -r
    echo
    if [[ ! $REPLY =~ ^[Yy]$ ]]; then
        print_info "取消卸载"
        exit 0
    fi
}

# 停止监控服务
stop_service() {
    print_info "停止监控服务..."
    
    # 查找并终止所有监控进程
    pkill -f "python.*main.py"
}

# 删除定时任务
remove_cron() {
    print_info "删除定时任务..."
    
    # 删除包含监控脚本的cron任务
    crontab -l 2>/dev/null | grep -v "$SCRIPT_DIR/cron.sh" | crontab -
}

# 删除配置文件
remove_config() {
    print_info "删除配置文件..."
    
    # 删除系统配置目录
    if [ -d "/etc/aliyun_monitor" ]; then
        sudo rm -rf /etc/aliyun_monitor
    fi
}

# 删除日志文件
remove_logs() {
    print_info "删除日志文件..."
    
    # 删除日志目录
    if [ -d "/var/log/aliyun_monitor" ]; then
        sudo rm -rf /var/log/aliyun_monitor
    fi
    
    # 删除单独的日志文件
    if [ -f "/var/log/aliyun_monitor.log" ]; then
        sudo rm -f /var/log/aliyun_monitor.log
    fi
}

# 删除Python虚拟环境
remove_venv() {
    print_info "删除Python虚拟环境..."
    
    # 如果存在虚拟环境，删除它
    if [ -d "venv" ]; then
        rm -rf venv
    fi
}

# 清理遗留文件
cleanup() {
    print_info "清理遗留文件..."
    
    # 删除__pycache__目录
    find . -type d -name "__pycache__" -exec rm -rf {} +
    
    # 删除.pyc文件
    find . -type f -name "*.pyc" -delete
    
    # 删除.log文件
    find . -type f -name "*.log" -delete
}

# 主函数
main() {
    print_info "开始卸载阿里云监控系统..."
    
    # 确认卸载
    confirm_uninstall
    
    # 停止服务
    stop_service
    
    # 删除定时任务
    remove_cron
    
    # 删除配置文件
    remove_config
    
    # 删除日志文件
    remove_logs
    
    # 删除虚拟环境
    remove_venv
    
    # 清理遗留文件
    cleanup
    
    print_info "卸载完成！系统已恢复到安装前状态。"
    print_warn "如果您想保留某些配置或日志，请从备份中恢复。"
}

# 运行主函数
main
